// redux 不仅可以用于react，也可以用于其他的框架。涉及状态管理的项目都可以使用redux，就包括原生的html js css项目
// react-redux 集成redux用于react中
// dva是一套状态管理集成方案，类似vuex
import { legacy_createStore as createStore } from "redux";

const reducer = (state = { count: 0 }, action) => {
    // state本身是只读的
    // 可以用switch case也可以用if else
    switch (action.type) {
        case "add":
            state.count = state.count + (action.payload || 1);
            break;
        case "cut":
            state.count = state.count - 1;
            break;

        default:
            return { ...state };
    }
    return { ...state }; // 必须要返回新的值
};

const store = createStore(reducer); // 创建store实例 类似 useReducer(reducer)
// 动作已经触发了，不能再监听到
// 监听函数可以拿到最新的数据，可以通UI界面可以渲染了
store.subscribe(() => {
    console.log("监听触发了");
    console.log(store.getState()); // 获取最新状态
});
store.dispatch({ type: "add", payload: 100 }); // 动作分发
store.dispatch({ type: "add", payload: 100 }); // 动作分发

function App(params) {
    return <div>App</div>;
}
export default App;
